A federated system is a collection of cooperating but autonomous data sources belonging to a federation. The autonomous data sources belonging to the federation cooperate with each other yet maintain some degree of autonomy. A federated system allows a client to send requests to multiple data sources with the use of a single federated query. A federated query is a query that contains several source queries, and each source query is specific to a data source. A source query that is specific to a data source is written in a format that is understandable by the data source and may be executable at the data source.
Today, data replication and fail-over are important properties of data sources and enterprise systems, and this is emphasized in data federation engines and service-oriented architectures. In a federated system, a federated server may receive a federated query from the client and send each source query embedded in the federated query to the appropriate data source for execution. When a client submits a federated query, the federated server may return a result of the federated query by retrieving results from the applicable data sources.
In a federated environment, when a federated system federates many different data sources, a higher probability exists that some data sources may not be available at some time. While conducting data federation, if a source query is sent to a data source that is unavailable, the unavailable data source is unable to respond to the source query. For example, if even a single data source is unavailable among the many other data sources, the federated query as a whole is usually rendered unusable. Accordingly, the federation server may be prevented from responding to the federated query because the result would have missing data that is stored at the unavailable data source. A solution to this problem is quite complicated because data federation aims to work with large amounts of data. Further, the solution to this problem becomes more complex as more autonomous data sources are added to the federation.
Today, a system may cope with this problem by introducing high-availability data sources, which is a valid approach in standard corporate environments. In the case of data federation, however, the data source is typically not under the control of the data federation architect.